package com.cmc.cloud.cmclink.doc.service.so;

import com.cmc.cloud.cmclink.doc.entity.BasicConfigDO;
import com.cmc.cloud.cmclink.doc.vo.sovo.basicconfgvo.*;
import com.cmes.framework.common.pojo.PageResult;

import javax.validation.Valid;
import java.util.Collection;
import java.util.List;

/**
 * 用户自定义信息 Service 接口
 *
 * @author 集运管理员
 */
public interface BasicConfigService {

    /**
     * 创建用户自定义信息
     *
     * @param createReqVO 创建信息
     */
    void createBasicConfig(@Valid BasicConfigCreateReqVO createReqVO);

    /**
     * 更新用户自定义信息
     *
     * @param updateReqVO 更新信息
     */
    void updateBasicConfig(@Valid BasicConfigUpdateReqVO updateReqVO);

    /**
     * 删除用户自定义信息
     *
     * @param id 编号
     */
    void deleteBasicConfig(Long id);

    /**
     * 批量删除用户自定义信息
     *
     * @param ids 编号列表
     */
    void deleteBatchBasicConfig(Collection<Long> ids);

    /**
     * 获得用户自定义信息
     *
     * @param id 编号
     * @return 用户自定义信息
     */
    BasicConfigDO getBasicConfig(Long id);

    /**
     * 获得用户自定义信息列表
     *
     * @param ids 编号
     * @return 用户自定义信息列表
     */
    List<BasicConfigDO> getBasicConfigList(Collection<Long> ids);

    /**
     * 获得code_define字段列表
     *
     * @return code_define字段列表
     */
    List<String> getBasicConfigCodeDefineList();

    /**
     * 获得用户自定义信息分页
     *
     * @param pageReqVO 分页查询
     * @return 用户自定义信息分页
     */
    PageResult<BasicConfigDO> getBasicConfigPage(BasicConfigPageReqVO pageReqVO);


    /**
     * 日本海关申报操作人代码
     *
     * @param createReqVO
     */
    void createJpBasicConfig(BasicConfigJpBaseVO createReqVO);

    /**
     * 日本海关申报操作人代码修改
     *
     * @param basicConfigJpUpdateReqVO
     */
    void updteJpBasicConfig(BasicConfigJpUpdateReqVO basicConfigJpUpdateReqVO);

}
